﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class OdGiDgLinetypeDash : IDisposable
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdGiDgLinetypeDash(IntPtr cPtr, bool cMemoryOwn)
		{
			this.swigCMemOwn = cMemoryOwn;
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdGiDgLinetypeDash obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdGiDgLinetypeDash()
		{
			this.Dispose();
		}

		public virtual void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.delete_OdGiDgLinetypeDash(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
		}

		public OdGiDgLinetypeDash.DashInfo m_dash
		{
			get
			{
				IntPtr intPtr = GlobalsPINVOKE.OdGiDgLinetypeDash_m_dash_get(this.swigCPtr);
				OdGiDgLinetypeDash.DashInfo result = (intPtr == IntPtr.Zero) ? null : new OdGiDgLinetypeDash.DashInfo(intPtr, false);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}
			set
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_m_dash_set(this.swigCPtr, OdGiDgLinetypeDash.DashInfo.getCPtr(value));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
		}

		public OdGiDgLinetypeDash.ShapeInfo m_shape
		{
			get
			{
				IntPtr intPtr = GlobalsPINVOKE.OdGiDgLinetypeDash_m_shape_get(this.swigCPtr);
				OdGiDgLinetypeDash.ShapeInfo result = (intPtr == IntPtr.Zero) ? null : new OdGiDgLinetypeDash.ShapeInfo(intPtr, false);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}
			set
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_m_shape_set(this.swigCPtr, OdGiDgLinetypeDash.ShapeInfo.getCPtr(value));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
		}

		public OdGiDgLinetypeDash() : this(GlobalsPINVOKE.new_OdGiDgLinetypeDash(), true)
		{
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		protected bool swigCMemOwn;

		public class DashInfo : IDisposable
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public DashInfo(IntPtr cPtr, bool cMemoryOwn)
			{
				this.swigCMemOwn = cMemoryOwn;
				this.swigCPtr = new HandleRef(this, cPtr);
			}

			[EditorBrowsable(EditorBrowsableState.Never)]
			public static HandleRef getCPtr(OdGiDgLinetypeDash.DashInfo obj)
			{
				if (obj != null)
				{
					return obj.swigCPtr;
				}
				return new HandleRef(null, IntPtr.Zero);
			}

			~DashInfo()
			{
				this.Dispose();
			}

			public virtual void Dispose()
			{
				if (this.swigCPtr.Handle != IntPtr.Zero)
				{
					if (this.swigCMemOwn)
					{
						lock (this.locker)
						{
							if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
							{
								this.swigCMemOwn = false;
								GlobalsPINVOKE.delete_OdGiDgLinetypeDash_DashInfo(this.swigCPtr);
							}
						}
						this.swigCMemOwn = false;
					}
					this.swigCPtr = new HandleRef(null, IntPtr.Zero);
				}
				GC.SuppressFinalize(this);
			}

			public uint m_uFlags
			{
				get
				{
					uint result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_uFlags_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_uFlags_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public double m_dLength
			{
				get
				{
					double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dLength_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dLength_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public double m_dStartWidth
			{
				get
				{
					double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dStartWidth_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dStartWidth_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public double m_dEndWidth
			{
				get
				{
					double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dEndWidth_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_dEndWidth_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public OdGiDgLinetypeDash.DashInfo.StrokeWidthMode m_lsWidthMode
			{
				get
				{
					OdGiDgLinetypeDash.DashInfo.StrokeWidthMode result = (OdGiDgLinetypeDash.DashInfo.StrokeWidthMode)GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_lsWidthMode_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_lsWidthMode_set(this.swigCPtr, (int)value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public OdGiDgLinetypeDash.DashInfo.StrokeCapsType m_lsCapsType
			{
				get
				{
					OdGiDgLinetypeDash.DashInfo.StrokeCapsType result = (OdGiDgLinetypeDash.DashInfo.StrokeCapsType)GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_lsCapsType_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_m_lsCapsType_set(this.swigCPtr, (int)value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public DashInfo() : this(GlobalsPINVOKE.new_OdGiDgLinetypeDash_DashInfo(), true)
			{
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public double getLength()
			{
				double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getLength(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setLength(double dLength)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setLength(this.swigCPtr, dLength);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public double getStartWidth()
			{
				double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getStartWidth(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setStartWidth(double dWidth)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setStartWidth(this.swigCPtr, dWidth);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public double getEndWidth()
			{
				double result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getEndWidth(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setEndWidth(double dWidth)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setEndWidth(this.swigCPtr, dWidth);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getDashFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getDashFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setDashFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setDashFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getByPassCornerFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getByPassCornerFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setByPassCornerFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setByPassCornerFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getCanBeScaledFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getCanBeScaledFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setCanBeScaledFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setCanBeScaledFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getInvertStrokeInFirstCodeFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getInvertStrokeInFirstCodeFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setInvertStrokeInFirstCodeFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setInvertStrokeInFirstCodeFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getInvertStrokeInLastCodeFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getInvertStrokeInLastCodeFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setInvertStrokeInLastCodeFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setInvertStrokeInLastCodeFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public OdGiDgLinetypeDash.DashInfo.StrokeWidthMode getWidthMode()
			{
				OdGiDgLinetypeDash.DashInfo.StrokeWidthMode result = (OdGiDgLinetypeDash.DashInfo.StrokeWidthMode)GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getWidthMode(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setWidthMode(OdGiDgLinetypeDash.DashInfo.StrokeWidthMode iMode)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setWidthMode(this.swigCPtr, (int)iMode);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getIncreasingTaperFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getIncreasingTaperFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setIncreasingTaperFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setIncreasingTaperFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getDecreasingTaperFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getDecreasingTaperFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setDecreasingTaperFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setDecreasingTaperFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getBaseStrokeDashFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getBaseStrokeDashFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setBaseStrokeDashFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setBaseStrokeDashFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool isDashOrBaseStrokeDash()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_isDashOrBaseStrokeDash(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public OdGiDgLinetypeDash.DashInfo.StrokeCapsType getCapsType()
			{
				OdGiDgLinetypeDash.DashInfo.StrokeCapsType result = (OdGiDgLinetypeDash.DashInfo.StrokeCapsType)GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_getCapsType(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setCapsType(OdGiDgLinetypeDash.DashInfo.StrokeCapsType iType)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_DashInfo_setCapsType(this.swigCPtr, (int)iType);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			private object locker = new object();

			private HandleRef swigCPtr;

			protected bool swigCMemOwn;

			public enum StrokeWidthMode
			{
				kLsNoWidth,
				kLsWidthLeft,
				kLsWidthRight,
				kLsWidthFull
			}

			public enum StrokeCapsType
			{
				kLsCapsClosed,
				kLsCapsOpen,
				kLsCapsExtended,
				kLsCapsHexagon,
				kLsCapsOctagon,
				kLsCapsDecagon,
				kLsCapsArc = 30
			}

			public enum Flags
			{
				kFlagDash = 1,
				kFlagPassCorner,
				kFlagCanBeScaled = 4,
				kFlagInvertStrokeInFirstCode = 8,
				kFlagInvertStrokeInLastCode = 16,
				kFlagIncreasingTaper = 32,
				kFlagDecreasingTaper = 64,
				kFlagBaseStrokeDash = 128
			}
		}

		public class ShapeInfo : IDisposable
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public ShapeInfo(IntPtr cPtr, bool cMemoryOwn)
			{
				this.swigCMemOwn = cMemoryOwn;
				this.swigCPtr = new HandleRef(this, cPtr);
			}

			[EditorBrowsable(EditorBrowsableState.Never)]
			public static HandleRef getCPtr(OdGiDgLinetypeDash.ShapeInfo obj)
			{
				if (obj != null)
				{
					return obj.swigCPtr;
				}
				return new HandleRef(null, IntPtr.Zero);
			}

			~ShapeInfo()
			{
				this.Dispose();
			}

			public virtual void Dispose()
			{
				if (this.swigCPtr.Handle != IntPtr.Zero)
				{
					if (this.swigCMemOwn)
					{
						lock (this.locker)
						{
							if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
							{
								this.swigCMemOwn = false;
								GlobalsPINVOKE.delete_OdGiDgLinetypeDash_ShapeInfo(this.swigCPtr);
							}
						}
						this.swigCMemOwn = false;
					}
					this.swigCPtr = new HandleRef(null, IntPtr.Zero);
				}
				GC.SuppressFinalize(this);
			}

			public uint m_uFlags
			{
				get
				{
					uint result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_uFlags_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_uFlags_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public OdDbStub m_pSymbol
			{
				get
				{
					IntPtr intPtr = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_pSymbol_get(this.swigCPtr);
					OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_pSymbol_set(this.swigCPtr, OdDbStub.getCPtr(value));
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke m_lsPos
			{
				get
				{
					OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke result = (OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke)GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_lsPos_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_lsPos_set(this.swigCPtr, (int)value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public OdGiLinetypeDash.offset m_offset
			{
				get
				{
					IntPtr intPtr = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_offset_get(this.swigCPtr);
					OdGiLinetypeDash.offset result = (intPtr == IntPtr.Zero) ? null : new OdGiLinetypeDash.offset(intPtr, false);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_offset_set(this.swigCPtr, OdGiLinetypeDash.offset.getCPtr(value));
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public double m_dRotation
			{
				get
				{
					double result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_dRotation_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_dRotation_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public double m_dScale
			{
				get
				{
					double result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_dScale_get(this.swigCPtr);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
					return result;
				}
				set
				{
					GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_m_dScale_set(this.swigCPtr, value);
					if (GlobalsPINVOKE.SWIGPendingException.Pending)
					{
						throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
					}
				}
			}

			public ShapeInfo() : this(GlobalsPINVOKE.new_OdGiDgLinetypeDash_ShapeInfo(), true)
			{
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public OdDbStub getSymbolId()
			{
				IntPtr intPtr = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolId(this.swigCPtr);
				OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolId(OdDbStub pStub)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolId(this.swigCPtr, OdDbStub.getCPtr(pStub));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke getSymbolPosOnStroke()
			{
				OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke result = (OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke)GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolPosOnStroke(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolPosOnStroke(OdGiDgLinetypeDash.ShapeInfo.SymbolPosOnStroke iMode)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolPosOnStroke(this.swigCPtr, (int)iMode);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getSymbolAtElementOriginFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolAtElementOriginFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolAtElementOriginFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolAtElementOriginFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getSymbolAtElementEndFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolAtElementEndFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolAtElementEndFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolAtElementEndFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getSymbolAtEachVertexFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolAtEachVertexFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolAtEachVertexFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolAtEachVertexFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getMirrorSymbolForReversedLinesFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getMirrorSymbolForReversedLinesFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setMirrorSymbolForReversedLinesFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setMirrorSymbolForReversedLinesFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getAbsoluteRotationAngleFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getAbsoluteRotationAngleFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setAbsoluteRotationAngleFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setAbsoluteRotationAngleFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getDoNotScaleElementFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getDoNotScaleElementFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setDoNotScaleElementFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setDoNotScaleElementFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getDoNotClipElementFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getDoNotClipElementFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setDoNotClipElementFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setDoNotClipElementFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getNoPartialStrokesFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getNoPartialStrokesFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setNoPartialStrokesFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setNoPartialStrokesFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getPartialOriginBeyondEndFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getPartialOriginBeyondEndFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setPartialOriginBeyondEndFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setPartialOriginBeyondEndFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getUseSymbolColorFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getUseSymbolColorFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setUseSymbolColorFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setUseSymbolColorFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public bool getUseSymbolWeightFlag()
			{
				bool result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getUseSymbolWeightFlag(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setUseSymbolWeightFlag(bool bSet)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setUseSymbolWeightFlag(this.swigCPtr, bSet);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public void getOffset(out double x, out double y)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getOffset(this.swigCPtr, out x, out y);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public void setOffset(double x, double y)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setOffset(this.swigCPtr, x, y);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public double getRotationAngle()
			{
				double result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getRotationAngle(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setRotationAngle(double dRotAngle)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setRotationAngle(this.swigCPtr, dRotAngle);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			public double getSymbolScale()
			{
				double result = GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_getSymbolScale(this.swigCPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
				return result;
			}

			public void setSymbolScale(double dScale)
			{
				GlobalsPINVOKE.OdGiDgLinetypeDash_ShapeInfo_setSymbolScale(this.swigCPtr, dScale);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}

			private object locker = new object();

			private HandleRef swigCPtr;

			protected bool swigCMemOwn;

			public enum SymbolPosOnStroke
			{
				kLsNoSymbol,
				kLsAtOriginOfStroke,
				kLsAtEndOfStroke,
				kLsAtCenterOfStroke
			}

			public enum Flags
			{
				kFlagSymbolAtElementOrigin = 1,
				kFlagSymbolAtElementEnd,
				kFlagSymbolAtEachVertex = 4,
				kFlagMirrorSymbolForReversedLines = 8,
				kFlagAbsoluteRotationAngle = 16,
				kFlagDoNotScaleElement = 32,
				kFlagDoNotClipElement = 64,
				kFlagNoPartialStrokes = 128,
				kFlagPartialOriginBeyondEnd = 256,
				kFlagUseSymbolColor = 512,
				kFlagUseSymbolWeight = 1024
			}
		}
	}
}
